import axios from 'axios'
import store from '@/store'
import * as headers from '@lib/header'

/**
 * description 加载axios实例
 * @param {*} config 
 * @author <a href="mailto:joshualwork@163.com">joshua_liu</a>
 * @date 2020-09-11 16:16:00
 */
function load_axios_instance(config) {
    let default_config = {
        // 请求前缀
        baseUrl: '/',
        // 请求超时时间
        timeout: 20000,
        // 设置访问权限 允许跨域携带cookie信息
        with_credentials: true,
        // xsrf_cookie_name: "tk",//xsrf token 的值的cookie的名称
        // xsrf_header_name: "token", //is the name of the http header that carries the xsrf token value
    }
    default_config = copy_to(config,default_config)
    let instance = axios.create(default_config)
    instance.interceptors.request.use(config => {
        // 在发送请求之前做些什么
        if(store.getters.token){
            config.headers[headers.AUTHORIZATION] =  1
        }
        // 请求发送前进行处理
        return config
    }, error => {
        // 对请求错误做些什么
        return error
    })

    instance.interceptors.response.use(response => {
        // 对响应数据做点什么
        loadingInstance.close()
        if (response.data.code === '0') {
            return response
        } else if (response.data.code === '1101') {
            store.commit("del_token")
        } else {
           
        }
    }, error => {
        // 对响应错误做点什么
        return error.response
    })


}


/**
 * 对象拷贝 把source_obj拷贝到target_obj
 * @param {*} source_obj 
 * @param {*} target_obj 
 * @author <a href="mailto:joshualwork@163.com">joshua_liu</a>
 */
function copy_to(source_obj, target_obj) {
    if (source_obj && target_obj) {
        for (var attr in source_obj) {
            target_obj[attr] = source_obj[attr]
        }
    }
}
export default instance
